home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
lisp
/
elk-2_0.lha
/
elk-2.0
/
lib
/
xt
/
converter.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-10-06
|
1KB
|
51 lines
#include "xt.h"
#define MAX_CONVERTER 512
typedef struct {
char *name;
int scheme_to_c;
PFX2S to_scheme;
PFS2X to_c;
} CONVERTER;
static CONVERTER ctab[MAX_CONVERTER], *clast = ctab;
void Define_Converter_To_Scheme (name, c) char *name; PFX2S c; {
Error_Tag = "c->scheme";
if (clast == ctab+MAX_CONVERTER)
Primitive_Error ("too many converters");
clast->name = name;
clast->scheme_to_c = 0;
clast->to_scheme = c;
clast++;
}
void Define_Converter_To_C (name, c) char *name; PFS2X c; {
Error_Tag = "scheme->c";
if (clast == ctab+MAX_CONVERTER)
Primitive_Error ("too many converters");
clast->name = name;
clast->scheme_to_c = 1;
clast->to_c = c;
clast++;
}
PFX2S Find_Converter_To_Scheme (name) char *name; {
register CONVERTER *p;
for (p = ctab; p < clast; p++)
if (!p->scheme_to_c && streq (p->name, name))
return p->to_scheme;
return 0;
}
PFS2X Find_Converter_To_C (name) char *name; {
register CONVERTER *p;
for (p = ctab; p < clast; p++)
if (p->scheme_to_c && streq (p->name, name))
return p->to_c;
return 0;
}